<?php

namespace Wgx\Admin\Com\Crud\EditPageInput;

use Wgx\Admin\Com\Crud\EditPageInputBase;

class InputCheckboxGroup extends EditPageInputBase
{
    /** @var array */
    private $map;
    /** @var bool */
    private $isRequired;
    /** @var null|string */
    private $className;
    /** @var null|string */
    private $specParam;

    /**
     * InputCheckboxGroup constructor.
     * 渲染时，给到渲染处的字段值应该时一个数组，即 get 到的值应该是一个数组，页面提交给服务器时，提交的字段值也是一个数组
     * @param array $map - [val1=>label1, val2=>label2, ...]
     * @param array $origValue - 原值, 选中的值的数组
     * @param bool $isRequired
     * @param null|string $className - 额外指定的 class, 指定在 group 上, 通过 .className input[type=checkbox] 来设置 checkbox 的样式
     * @param null|string $specParam - 额外指定的参数, 指定在 group 上
     */
    public function __construct($map, $origValue, $isRequired = false, $className = null, $specParam = null)
    {
        $this->map = $map;
        $this->origValue = $origValue;
        $this->isRequired = $isRequired;
        $this->className = $className;
        $this->specParam = $specParam;
    }

    /**
     * @inheritDoc
     */
    public function getInputType()
    {
        return self::InputCheckboxGroup;
    }

    /**
     * @return array
     */
    public function getMap()
    {
        return $this->map;
    }

    /**
     * @param array $map
     * @return InputCheckboxGroup
     */
    public function setMap($map)
    {
        $this->map = $map;
        return $this;
    }

    /**
     * @inheritDoc
     */
    public function getIsRequired()
    {
        return $this->isRequired;
    }

    /**
     * @param bool $isRequired
     * @return InputCheckboxGroup
     */
    public function setIsRequired($isRequired)
    {
        $this->isRequired = $isRequired;
        return $this;
    }

    /**
     * 额外指定的 class
     * @return string|null
     */
    public function getClassName()
    {
        return $this->className;
    }

    /**
     * @param string|null $className - 额外指定的 class
     * @return InputCheckboxGroup
     */
    public function setClassName($className)
    {
        $this->className = $className;
        return $this;
    }

    /**
     * 额外指定的参数
     * @return string|null
     */
    public function getSpecParam()
    {
        return $this->specParam;
    }

    /**
     * @param string|null $specParam - 额外指定的参数
     * @return InputCheckboxGroup
     */
    public function setSpecParam($specParam)
    {
        $this->specParam = $specParam;
        return $this;
    }
}